/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.naotebuk.dao;

import br.com.naotebuk.modelo.Cidade;
import br.com.naotebuk.modelo.Cliente;
import br.com.naotebuk.modelo.Endereco;
import br.com.naotebuk.modelo.Estado;
import java.util.List;
import org.springframework.stereotype.Repository;

/**
 *
 * @author Amrc
 */

@Repository
public class ClienteDao extends NaotebukDao<Cliente> {
    
    public List<Estado> listaEstados(){
        return em.createNamedQuery("Estado.listar").getResultList();
    }
    
    public List<Cidade> listaCidadesPorEstado(){
        return null;
    }

    public Estado estadoPorId(Integer id) {
        return em.find(Estado.class, id);
    }

    public Endereco enderecoPorId(Integer id) {
        return em.find(Endereco.class, id);
    }

    public Cidade cidadePorId(Integer id) {
        return em.find(Cidade.class, id);
    }

    public List<Cidade> cidadesPorEstado(Estado estado) {
        return em.createNamedQuery("Cidade.listarPorEstado")
                .setParameter("estado", estado)
                .getResultList();
    }

    public List<Cliente> buscarPorNome(String nome) {
        return em.createNamedQuery("Cliente.buscaPorNomeCompleto")
                .setParameter("nomeCompleto", "%"+nome+"%")
                .getResultList();
    }

    public Cliente buscaPorCpf(String cpf) throws RuntimeException {
        return (Cliente) em.createNamedQuery("Cliente.buscaPorCpf")
                .setParameter("cpf", cpf)
                .getSingleResult();
    }
}
